const interviewTopicList: string[] = [
    'js有那些数据类型，以及区别',
    'es6中新增的数据类型是什么',
    '简单介绍下Symbol',
    '为什么会有Symbol',
    'BigInt简单介绍下',
    '为什么会有BigInt',
    '基本数据类型有哪些',
    '引用数据类型有哪些',
    '基本引用数据的值存在哪里',
    '数据类型检测有哪些方式',
    'js中的typeof运算符',
    '介绍instanceof',
    '介绍constructor',
    'Object.proto.toString.call()判断数据类型的原理',
    '为什么使用obj.toString()和Object.proto.toString.call(obj)结果不一样',
    '介绍null和undefined',
    '如何手写instanceof',
    '==和===区别',
    'Object.is()和==、===区别',
    '为什么会出现Object.is()',
    '什么是js的包装类型',
    '如何判断一个对象是空对象',
    'const声明的变量能修改吗',
    'new操作符命令实现步骤',
    '箭头函数的this',
    '自己手写箭头函数的this',
    '扩展运算符的作用以及使用场景',
    '介绍对象扩展运算符',
    'Object.assign()',
    '数组扩展运算符',
    '数组扩展运算符应用',
    '只要是什么结构式的对象，扩展运算符都能转为真正的数组',
    'ES中如果将某些数组结构转为数组',
    'Proxy可以实现什么功能',
    '对JSON的理解',
    'JSON是一种基于文本的——',
    'js脚本延迟加载都有那些方式',
    'script标签中的type属性值defer、async有什么区别',
    '什么是BOM和DOM',
    '文档对象模型是什么',
    '对ajax的理解',
    'ajax请求的步骤',
    '什么是尾调用，以及好处',
    'ES模块和CommonJS模块的异同',
    'for...in和for...of',
    'ajax、axios、fetch区别',
    '对原型的理解',
    '对原型链的理解',

    '原型链的终点是什么',
    '介绍作用域都有那些种',
    '介绍全局作用域',
    '介绍函数作用域',
    '介绍块级作用域',
    '作用域链',
    '作用域链的本质',
    '对this对象的理解',
    'this的指向四种调用方式都是什么',
    'this的四种调用方式优先级',
    'apply和call区别',
    '异步编程的实现方式有几种',
    '介绍Promise',
    'Promise缺点',
    'Promise特点',
    'Promise优点',
    '对async、await理解',
    'async、await优势',
    'async、await比Promise的优势',
];

export {
    interviewTopicList,
}